import axios from "axios";
import store from '@/store'
import {Message, MessageBox} from "element-ui";

const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 5000
})

//请求拦截器
service.interceptors.request.use(config => {
    if (store.state.token) {
        config.headers['Token'] = store.state.token
    }
    return config;
}, error => {
    return Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(
    response => {
        //     取出响应体中的真实数据，因为Promise会多包一层
        const res = response.data
        if (res.code !== 200) {
            //     如果响应体中的code不是2000，则属于非正常响应，则弹出错误提示信息
            Message({
                message: res.msg || 'Error',
                type: 'error',
                duration: 5 * 1000
            });
            if (res.code === 401) {
                //表示用户未登录，则直接跳转到登录页面
                MessageBox.confirm('你的登录已过期，请重新登录或取消', '确认登录', {
                    confirmButtonText: '重新登录',
                    cancelButtonText: '取消登录',
                    type: 'warning'
                }).then(() => {
                    //     清空token
                    store.dispatch('resetToken').then(()=>{
                        location.reload()
                    })
                })
            }
            return Promise.reject(new Error(res.msg || "Error"))
        } else {
            return res;
        }

    }
)

export  default service


